package cn.spike.rockcc.service.impl;

import cn.spike.rockcc.service.ITokenService;
import cn.spike.rockcc.util.StrUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.util.concurrent.TimeUnit;

/**
 * @author:spike
 * @create:2023-03-20 10:17
 */
@Service
public class TokenServiceImpl implements ITokenService {

    @Autowired
    private RedisTemplate<Object,Object> redisTemplate;

    /**
     * token存储在redis
     *  存储的key 和 value的设计
     *  key 设计方案： ids=3
     *  方案一：生产key的时候 让用户的id参与进去
     *  方案二：让用户的ip参与进去--有风险 在同一个网络环境下面
     * @param ids  购买的课程的id
     * @return
     */
    @Override
    public String createToken(String ids) {
        String token = StrUtils.getComplexRandomString(10);
        Long loginId = 3L; //TODO 登录人id
        //key - 课程id+登陆人id
        redisTemplate.opsForValue().set(loginId+":"+ids,token,10, TimeUnit.MINUTES);
        return token;
    }
}
